
/*
        找出序列中重复的数字和缺少的数字
        由于记账错误，给定的一个正整数序列里面，有两个数字重复了，同时缺少了一个数字。
        要求写一个函数，找出序列中重复的数字和缺少的数字。
        例如：
        输入：[1, 5, 2, 2, 3]
        输出：[2, 4]

 */
package 其他;

import java.util.Arrays;
import java.util.Scanner;
public class test02 {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine().trim();
        String[] strArray  = str.split(",");
        int m = strArray.length,res = -1;
        int[] intArray = new int[m];
        int temp[] = null;
        temp = new int[m];
        for(int i = 0; i < m; i++){
            intArray[i] = Integer.parseInt(strArray[i]);
        }//得到了一个输入的整型数组
        //排序
        Arrays.sort(intArray);
        int min = intArray[0];
        System.out.print("重复：");
        for(int i = 0; i < m-1; i++) {
            if (intArray[i] == intArray[i + 1] && intArray[i] != res) {
                res = intArray[i];
                System.out.print(res + " ");
            }
        }
        System.out.println();
        System.out.print("缺失：");
        //通过原来数组中的值减去最小的数组值来给新数组标记是否有值，若无值则为0，
        // 把无值的数组下标加上原来数组最小值则为缺失的值
        for (int i = 0; i < m; i++)
            temp[intArray[i] - min] = 1;
        for (int i = 0; i < temp.length; i++)
            if(temp[i] == 0)
                System.out.print(i+min + " ");
    }
}
